package lil.llahn.security.common.asymmetric;

/**
 * @ClassName: Types
 * @Description: TODO
 * @Date: 2019/11/8 15:43
 * @Auther: lil
 */
public class Types {

    /**
     *      算法              秘钥长度                默认长度        签名长度        实现方
     *      MD2withRSA        512-65536（64的整数倍） 1024            同秘钥          JDK
     *      MD5withRSA        512-65536（64的整数倍） 1024            同秘钥          JDK
     *      SHA1withRSA       512-65536（64的整数倍） 1024            同秘钥          JDK
     */
    public enum RSA{
        MD2withRSA,
        MD5withRSA,
        SHA1withRSA;
    }

    /**
     *      算法              秘钥长度                默认长度        签名长度        实现方
     *      SHA1withDSA       512-65536（64的整数倍） 1024            同秘钥          JDK
     */
    public enum DSA{
        SHA1withDSA;
    }

    /**
     *      算法                  秘钥长度                默认长度        签名长度        实现方
     *      NONEwithECDSA         112-571                 256             128             JDK/BC
     *      SHA1withECDSA         112-571                 256             160             JDK/BC
     *      SHA256withECDSA       112-571                 256             256             JDK/BC
     *      SHA384withECDSA       112-571                 256             384             JDK/BC
     *      SHA512withECDSA       112-571                 256             512             JDK/BC
     */
    public enum ECDSA{
        NONEwithECDSA,
        SHA1withECDSA,
        SHA256withECDSA,
        SHA384withECDSA,
        SHA512withECDSA;
    }
    /**
     *      算法                      秘钥长度                默认长度        工作模式        填充方式         备注
     *      PBEWithMD5AndDES          56                      56              CBC             PKCS5Padding     java6实现
     *      PBEWithMD5AndTripeDES     112、168                168             CBC             PKCS6Padding     java7实现
     *      PBEWithSHA1AndDESede      112、168                168             CBC             PKCS7Padding     java8实现
     *      PBEWithSHA1AndRC2_40      40至1024                128             CBC             PKCS8Padding     java9实现
     */
    public enum PBE{
        PBEWithMD5AndDES,
        PBEWithMD5AndTripeDES,
        PBEWithSHA1AndDESede,
        PBEWithSHA1AndRC2_40;
    }
}
